package tec;

public class TestPassagerStresse extends TestPassagerAbstrait{
	
	protected PassagerAbstrait creerPassager(String nom, int destination)
	{
		return new PassagerStresse(nom, destination);
	}
	
	public void lancer() throws TecInvalidException
	{
		super.type_s = new String("Stresse");
		super.lancer();
		System.out.print("."); super.nbTest++;
		testSeLeve();
		System.out.print("."); nbTest++;
		testSortirBus();
		System.out.print("."); nbTest++;
		testMonterDans();
		System.out.println("OK (" + super.nbTest + ")");
	}
	
	protected void testSeLeve() {
		Passager test1 = new PassagerStresse("Testeur", 10);
		test1.accepterPlaceAssise();
		
		Bus bus = new FauxBus();
		test1.nouvelArret(bus, 1);
		assert 0 == ((FauxBus)bus).messages.size() : "pas a destination";
		test1.nouvelArret(bus, 2);
		assert 0 == ((FauxBus)bus).messages.size() : "pas a destination";
		test1.nouvelArret(bus, 3);
		assert "demande changer debout" == ((FauxBus)bus).messages.getLast() : "se lever";  
	}
	
	protected void testSortirBus() {
		Passager test1 = new PassagerStresse("Testeur", 3);
		test1.accepterPlaceDebout();
		Bus bus = new FauxBus();
		
		test1.nouvelArret(bus, 1);
		assert 0 == ((FauxBus)bus).messages.size() : "pas a destination";
		test1.nouvelArret(bus, 2);
		assert 0 == ((FauxBus)bus).messages.size() : "pas a destination";
		
		test1.nouvelArret(bus, 3);
		assert "demande sortie" == ((FauxBus)bus).messages.getLast() : "destination";   
	
	}
	
	protected void testMonterDans() throws TecInvalidException {
		Passager test1 = new PassagerStresse("Testeur", 5);
		Bus bus = new FauxBus();
		
		((Usager) test1).monterDans((Transport) bus);
		assert "demande place assise" == ((FauxBus)bus).messages.getLast() : "demande assis"; 
		
		((Usager) test1).monterDans((Transport) bus);
		assert "demande place assise" == ((FauxBus)bus).messages.getLast() : "ne demande pas debout"; 

	}
}
